﻿#include<iostream>

/*
N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti​ 时刻到达机场上空，
到达时它的剩余油料还可以继续盘旋 Di​ 个单位时间，即它最早可以于 Ti​ 时刻开始降落，
最晚可以于 Ti​+Di​ 时刻开始降落。降落过程需要 Li​ 个单位时间。
一架飞机降落完毕时，另一架飞机可以立即在同一时刻开始降落，但是不能在前一架飞机完成降落前开始降落。
请你判断 N 架飞机是否可以全部安全降落。
输入格式
输入包含多组数据。
第一行包含一个整数 T，代表测试数据的组数,对于每组数据，第一行包含一个整数 N。
以下 N 行，每行包含三个整数：Ti​，Di​ 和 Li​。
输出格式
对于每组数据，输出 YES 或者 NO，代表是否可以全部安全降落。
*/

using namespace std;

const int N = 10;
bool st[N];  //标记飞机是否已降落
int n;  //当前测试用例中飞机的数量
bool flag = false;
int t[N], d[N], l[N];

void dfs(int u, int last) { //当前正在考虑第几架飞机，前一架飞机最晚降落的时间
	if (flag)
		return;
	if (u == n) {  //所有飞机已考虑完毕
		flag = true;  //找到了可行方案
		return;
	}
	for (int i = 0; i  < n; i++) {
		if (!st[i]) {
			if (t[i] + d[i] >= last) {
				st[i] = true;
				if (t[i] > last)
					dfs(u + 1, t[i] + l[i]);
				else
					dfs(u + 1, last + l[i]);
				st[i] = false;  //回溯，将飞机标记为未降落
			}
			else
				return;  //找不到合适时间，直接返回，表示方案不可行
		}
	}
}

int main() {
	int T; //测试用例数量
	cin >> T;
	while (T--) {
		cin >> n;  //飞机数量
		for (int i = 0; i < n; i++)
			cin >> t[i] >> d[i] >> l[i];
		for (int i = 0; i < N; i++)
			st[i] = false;
		flag = false;
		dfs(0, 0);
		if (flag)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}
	return 0;
}